Network appliances are often used to provide access to one or more network services. A network appliance may comprise a number of virtual servers, each virtual server providing access to a number of services. The virtual servers may manage incoming connections from clients, and perform a number of other functions for the connections including connection pooling, caching, and acceleration. In the course of managing incoming connection requests, network appliances may provide load balancing among the virtual servers. One method of load balancing includes assigning a connection capacity to a virtual server based on a total connection capacity for the services to which the virtual server provides access. When the number of connections to a virtual server exceeds this capacity, new connection requests may be routed to a second virtual server.
One drawback of this approach is that it cannot compensate for the failure of one or more of the services. A failure of one services may significantly reduce the number of connections for which a virtual server can provide service.
It would, therefore, be desirable to provide systems and methods to dynamically determine a connection capacity for a virtual server providing access to one or more services.